import thin_render from "../../../lib/thin_render.mjs";

/**
 * 渲染文本域编辑器
 * @param {HTMLElement} td - 单元格元素
 * @param {Object} col - 列配置
 * @param {Object} template - 模板配置
 * @param {boolean} insert - 是否为插入行
 */
export function renderEditTextarea(td, col, template, insert) {
  // 调整高度的辅助函数
  function adjustHeight(element) {
    element.style.height = "0px";
    element.style.height = `${element.scrollHeight}px`;
  }

  thin_render(td, {
    textarea: col.col,
    id: col.col,
    bind: col.col,
    a: col.a,
    required: col.required,
    event: {
      change: (e) => {
        // 处理非插入行的变更事件
        if (!insert) {
          // 处理列变更事件
          if (col.changed) {
            col.changed(e);
          }

          // 处理行变更事件
          if (template.rowchange) {
            template.rowchange(e);
            template?.changed?.(e);
          }
        } else if (template.insertrowchange) {
          // 插入行只触发 insertrowchange
          template.insertrowchange(e);
        }
      },
      input: (e) => adjustHeight(e.sender),
    },
  });

  // 初始化高度
  let ele = td.querySelector("textarea");
  if (ele) adjustHeight(ele);
}
